/*
 * Транзитивность графа
 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include <limits.h>
#include <ctype.h>

int
main(int argc, char **argv)
{
	static int am[100][100];
	int n, m, i, j, k, a, b;

	scanf("%d%d", &n, &m);
	for (i = 0; i < m; i++) {
		scanf("%d%d", &a, &b);
		--a; --b;
		am[a][b] = am[b][a] = 1;
	}

	for (i = 0; i < n; i++) {
		for (j = 0; j <= i; j++) {
			if (am[i][j]) {
				for (k = 0; k < n; k++) {
					if (am[j][k] && k != i)
						if (!am[i][k]) {
							puts("NO");
							return 0;
						}
				}
			}
		}
	}
	puts("YES");

	return 0;
}
